package com.viajero.movil;

import java.util.Calendar;

import com.viajero.movil.dbviajero.Empresa_TaxiDat;
import com.viajero.movil.dbviajero.ViajeroSQLiteHelper;
import com.viajero.movil.dominio.Recomendar_Taxi;
import com.viajero.movil.dominio.Taxi;
import com.viajero.movil.dominio.Viajero;
import com.viajero.movil.negocio.Empresa_TaxiNeg;
import com.viajero.movil.negocio.Recomendar_TaxiNeg;
import com.viajero.movil.negocio.TaxiNeg;
import com.viajero.movil.negocio.ViajeroNeg;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RatingBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class RecomendarTaxiActivity extends Activity implements OnItemSelectedListener, OnClickListener {

	Empresa_TaxiNeg etNeg;
	Taxi taxi;
	TaxiNeg tNeg;
	Viajero viajero;
	ViajeroNeg vNeg;
	Recomendar_Taxi recomendarTaxi;
	Recomendar_TaxiNeg rtNeg;
	ViajeroSQLiteHelper vdb;
	
	Bundle bund;
	
	Spinner spEmpresa;
	Spinner spTaxista;
	RatingBar rbCalificacion;
	EditText txtComentario;
	Button btnGuardar;
	Button btnLimpiar;
	Button btnCancelar;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.recomendar_taxi);
		
		initComponents();
		
	}
	
	public void initComponents(){
		
		taxi = new Taxi();
		viajero = new Viajero();
		etNeg = new Empresa_TaxiNeg();
		tNeg = new TaxiNeg();
		vNeg = new ViajeroNeg();
		recomendarTaxi = new Recomendar_Taxi();
		rtNeg = new Recomendar_TaxiNeg();
		vdb = new ViajeroSQLiteHelper(this);
		
		bund = getIntent().getExtras();
		
		viajero.setUsuario(bund.getString("usuario"));
		recomendarTaxi.setUsuario(viajero.getUsuario());
		
		spEmpresa = (Spinner)findViewById(R.id.spEmpresa);
		spTaxista = (Spinner)findViewById(R.id.spTaxista);
		rbCalificacion = (RatingBar)findViewById(R.id.rbCalificacion);
		txtComentario = (EditText) findViewById(R.id.txtComentario);
		btnGuardar = (Button)findViewById(R.id.btnGuardar);
		btnLimpiar = (Button)findViewById(R.id.btnLimpiar);
		btnCancelar = (Button)findViewById(R.id.btnCancelar);
		
		
		
		final String[] empresas = etNeg.cargarEmpresas(vdb);
		ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, empresas);
		adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spEmpresa.setAdapter(adaptador);
		
		spEmpresa.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			
			public void onItemSelected(AdapterView<?> parent,android.view.View v, int position, long id) {
				cargarTaxista(empresas[position]);
				if(position==0){
						Limpiar();
					
				}
			}
            public void onNothingSelected(AdapterView<?> parent) {
                    //
            }
		});
		
		rbCalificacion.setRating((float) 2.5);

		btnGuardar.setOnClickListener(this);
		btnLimpiar.setOnClickListener(this);
		btnCancelar.setOnClickListener(this);
		
	}

	public void cargarTaxista(String empresa){
		int id = etNeg.ObtenerId_Empresa(vdb, empresa);
		final String[] taxista = tNeg.cargarTaxista(vdb, id);
		ArrayAdapter<String> adaptadorTaxista = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, taxista);
		adaptadorTaxista.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spTaxista.setAdapter(adaptadorTaxista);
		
		spTaxista.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) {
				// TODO Auto-generated method stub
				if(position!=0){
					cargarRecomendacion(taxista[position]);
				}else{
					rbCalificacion.setRating((float) 2.5);
					txtComentario.setText("");
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
		
	}
	
	public void cargarRecomendacion(String taxista){
		int div = 0;
		for(int i = 0 ; i < taxista.length(); i++){
			if(taxista.charAt(i) == ' '){
				div = i;
				break;
			}
		}
		
		taxi.setNombre(taxista.substring(0, div));
		taxi.setApellido(taxista.substring(div+1));
		taxi = tNeg.leerTaxi(vdb, taxi);
		recomendarTaxi = new Recomendar_Taxi();
		recomendarTaxi.setId_taxi(taxi.getId_taxi());
		recomendarTaxi.setUsuario(viajero.getUsuario());
		recomendarTaxi = rtNeg.cargarRecomendacion(vdb,recomendarTaxi);
		
		if(recomendarTaxi.getCalificacion()!=0.0){
			rbCalificacion.setRating(recomendarTaxi.getCalificacion());
			txtComentario.setText(recomendarTaxi.getRecomendacion() );
			MostrarMensaje("Ya ingreso un comentario, puede modificarlo si quiere").show();
		}else{
			rbCalificacion.setRating((float) 2.5);
			txtComentario.setText("");
		}
		//txtComentario.setText(taxi.getId_taxi()+" "+taxi.getId_empresa());
		
	}
	
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
			long arg3) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
	}

	public Toast MostrarMensaje(String m){
		return Toast.makeText(this,m,Toast.LENGTH_SHORT);
	}
	
	@Override
	public void onClick(View arg0) {
		switch (arg0.getId()) {
		case R.id.btnGuardar:
			if(spTaxista.getSelectedItemId()!= 0)
			{
				recomendarTaxi.setCalificacion(rbCalificacion.getRating());
				recomendarTaxi.setRecomendacion(txtComentario.getText().toString());
				if(recomendarTaxi.getFecha().equals("")){
					Calendar c = Calendar.getInstance();
					int anio = c.get(Calendar.YEAR);
					int mes = c.get(Calendar.MONTH)+1;
					int dia = c.get(Calendar.DAY_OF_MONTH);
					recomendarTaxi.setFecha(anio+"-"+mes+"-"+dia);
					rtNeg.guardarRecomendacion(vdb, recomendarTaxi);
				}else{
					rtNeg.actualizarRecomendacion(vdb,recomendarTaxi);
				}
			
				switch (recomendarTaxi.getError()) {
				case 0:
					MostrarMensaje("Guardado con exito").show();
					Intent iEnviar = new Intent(this, EnviarRecomendacionTaxiActivity.class);
					Bundle bun = new Bundle();
					bun.putString("usuario", recomendarTaxi.getUsuario());
					bun.putInt("id_taxi", recomendarTaxi.getId_taxi());
					iEnviar.putExtras(bun);
					startActivity(iEnviar);
					finish();
					break;
				case 1:
					MostrarMensaje("Asigne una calificacion para el taxista").show();
					break;
				case 2:
					MostrarMensaje("Ingrese un comentario porfavor").show();
					break;
				default:
					break;
				}
			}else{
				if(spEmpresa.getSelectedItemId()==0){
					MostrarMensaje("Porfavor seleccione una empresa de taxi").show();
				}else{
					MostrarMensaje("Porfavor seleccione un taxista").show();
				}
			}
			break;
		case R.id.btnLimpiar:
			Limpiar();
			break;
		case R.id.btnCancelar:
			Intent iCancelar = new Intent(this,MenuViajeroActivity.class);
			iCancelar.putExtras(bund);
			startActivity(iCancelar);
			finish();
			break;

		default:
			break;
		}
		
	}
	
	
	
	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
	}

	public void Limpiar(){
		spEmpresa.setSelection(0);
		rbCalificacion.setRating((float) 2.5);
		txtComentario.setText("");
	}

	
}
